#ifndef COLOR_H
#define COLOR_H

#include <GL/gl.h>

class Color {
private:
	double red;
	double green;
	double blue;
	double alpha;

public:
	static const Color WHITE;
	static const Color LIGHT_GRAY;
	static const Color GRAY;
	static const Color DARK_GRAY;
	static const Color BLACK;
	static const Color RED;
	static const Color GREEN;
	static const Color BLUE;
	static const Color CYAN;
	static const Color MAGENTA;
	static const Color YELLOW;
	static const Color PINK;
	static const Color COTTON_CANDY;
	static const Color ORANGE;
	static const Color VIOLET;
	static const Color PURPLE;
	static const Color LIME;
	static const Color BEIGE;
	static const Color INDIGO;
	static const Color BROWN;
	static const Color DARK_BROWN;
	static const Color GOLD;

public:
	Color(double red, double green, double blue, double alpha);
	Color(double red, double green, double blue);
	Color(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
	Color(int codedColor);

	void bind();

	double getRed();
	double getGreen();
	double getBlue();
	double getAlpha();

	GLbyte getByteRed();
	GLbyte getByteGreen();
	GLbyte getByteBlue();
	GLbyte getByteAlpha();

	int getCodedInteger();

	Color interpolate(const Color &op2, const double alpha);
};

#endif // COLOR_H
